﻿$(document).ready(function () {

    ShowLinks('');

    $("#AjaxWebLinksContainer .AjaxWebLinksWebLink").mouseover(
              function () {
                  $(this).css('background-color', '#ccc');
                  $(this).find("span").show();
              }
          );

    //Add a new link
    //Check if fields are filled out
    $("#AjaxWebLinksAddButton").click(function () {
        var url = $("").val();
        var text = $("").val();
    });


    $("#AjaxWebLinksContainer .AjaxWebLinksWebLink").mouseout(
              function () {
                  $(this).css('background-color', '#fff');
                  $(this).find("span").hide();

              }
        );

    $("#AjaxWebLinksContainer .AjaxWebLinksDeleteButton").click(function () {

        // $(this).parent().slideUp();
    });

    $("#AjaxWebLinksShowAddButton").click(function (e) {

        ShowEditForm(0, '', '');
        e.preventDefault();
    });

    $("#AjaxWebLinksRefresh").click(function (e) {
        ShowLinks('Refresh successful');
        e.preventDefault();
    });


    $("#AjaxWebLinksAddButton").click(function () {

        $("#AjaxWebLinksEditFields").slideUp();

        AjaxWebLinkAddLink($('#AjaxWebLinksAddUrl').val(), $('#AjaxWebLinksAddText').val());
    });

    $('#AjaxWebLinksSaveButton').click(function () {
        if ($('#AjaxWebLinksEditID').val() == 0) {
            AjaxWebLinkAddLink($('#AjaxWebLinksEditUrl').val(), $('#AjaxWebLinksEditText').val());
        }
        else {
            AjaxWebLinkUpdateLink($('#AjaxWebLinksEditID').val(),$('#AjaxWebLinksEditUrl').val(), $('#AjaxWebLinksEditText').val());
        }

    });


    $("#AjaxWebLinksSaveCancelButton").click(function () {

        $("#AjaxWebLinksEditFields").slideUp();
    });
});


function AjaxWebLinkShowEdit(link) {
    $(link).css('background-color', '#ccc');
    $(link).find("span").show();

}

function AjaxWebLinkHideEdit(link) {
    $(link).css('background-color', '#fff');
    $(link).find("span").hide();
}

function AjaxWebLinkDoEdit(element, linkID) {

    var link = $(element).parent().find('a');
    var url = link.attr('href');
    var text = link.text();
    ShowEditForm(linkID, url, text);
}

function ShowEditForm(linkID,url, text) {

    $('#AjaxWebLinksEditID').val(linkID);
    $('#AjaxWebLinksEditUrl').val(url);
    $('#AjaxWebLinksEditText').val(text);
    $('#AjaxWebLinksEditFields').slideDown();
}

function AjaxWebLinkDoDelete(LinkID) {

    if (!confirm("Are you sure you want to delete this link?")) {
        return;
    }
    
    ShowBusy("Removing Link...Please Wait ");

    $.ajax({
        type: "POST",
        beforeSend: function (xhr) {
            xhr.setRequestHeader(AjaxWebLinksModuleIDKey, AjaxWebLinksModuleID);
            xhr.setRequestHeader(AjaxWebLinksTabIDKey, AjaxWebLinksTabID);
        },
       
        url: AjaxWebLinksHandler + "/DeleteLink",
        data: {"LinkID": LinkID },
        dataType: "json",
        success: function (data) {
            if (data && !data.HasError && data.Data ) {

                ShowLinks('Delete Successful!');

            }
            else if (data && data.HasError) {
                ShowAjaxError(data.Error);
            }
            else {
                ShowAjaxError('There was an error removing the link', this);
            }
        },
        error: function (xhr, status, error) {
            ShowAjaxError('Error removing link', xhr);
        }

    });

}

function AjaxWebLinkAddLink(LinkURL, LinkText) {
    ShowBusy("Adding Link...Please Wait ");
    $.ajax({
        type: "POST",
        beforeSend: function (xhr) {
            xhr.setRequestHeader(AjaxWebLinksModuleIDKey, AjaxWebLinksModuleID);
            xhr.setRequestHeader(AjaxWebLinksTabIDKey, AjaxWebLinksTabID);
        },
        //contentType: "application/json; charset=utf-8",
        url: AjaxWebLinksHandler + "/AddLink",
        data: {"LinkURL": LinkURL ,"LinkText": LinkText },
        dataType: "json",
        success: function (data) {
            if (data && !data.HasError && data.Data != 0) {

                HideEdit();
                ShowLinks('Link Added successfully! ');

            }
            else if (data && data.HasError) {
                ShowAjaxError(data.Error);
            }
            else {
                ShowAjaxError('Error adding link', this);
            }
        },
        error: function () {
            ShowAjaxError('Error adding link', this);
        }
    });
}


function AjaxWebLinkUpdateLink(LinkID, LinkURL, LinkText) {
    ShowBusy("Updating Link...Please Wait ");
    $.ajax({
        type: "POST",
        beforeSend: function (xhr) {
            xhr.setRequestHeader(AjaxWebLinksModuleIDKey, AjaxWebLinksModuleID);
            xhr.setRequestHeader(AjaxWebLinksTabIDKey, AjaxWebLinksTabID);
        },
   
        url: AjaxWebLinksHandler + "/UpdateLink",
        data: {"LinkID":LinkID ,"LinkURL":LinkURL ,"LinkText": LinkText },
        dataType: "json",
        success: function (data) {
            if (data && !data.HasError && data.Data) {
                HideEdit();
                ShowLinks('Update Successful!');

            }
            else if (data && data.HasError) {
                ShowAjaxError(data.Error);
            }
            else {
                ShowAjaxError('Error updating link', this);
            }
        },
        error: function () {
            ShowAjaxError('Error updating link', this);
        }

    });
}

function ShowLinks(message) {
    ShowBusy("Updating List of links");
    $.ajax({
        type: "POST",
        beforeSend: function (xhr) {
            xhr.setRequestHeader(AjaxWebLinksModuleIDKey, AjaxWebLinksModuleID);
            xhr.setRequestHeader(AjaxWebLinksTabIDKey, AjaxWebLinksTabID);
        },
       
        url: AjaxWebLinksHandler + "/GetLinks",
        data: {},
        dataType: "json",
        success: function (data) {
            ShowStatus(message, true);
            var WebLinks = '';
            if (data) {


                $.each(data, function (i, item) {

                    var WebLink = '<div class="AjaxWebLinksWebLink" onmouseover="AjaxWebLinkShowEdit(this)" onmouseout="AjaxWebLinkHideEdit(this)">';
                    WebLink += '<a href="' + item.LinkURL + '" >' + item.LinkText + '</a>';
                    WebLink += '<span class="AjaxWebLinksEditButton" onclick="AjaxWebLinkDoEdit(this,' + item.LinkID + ')" >&nbsp;</span>';
                    WebLink += '<span class="AjaxWebLinksDeleteButton" onclick="AjaxWebLinkDoDelete(' + item.LinkID + ')" >&nbsp;</span>';
                    WebLink += '</div>';

                    WebLinks += WebLink

                });

                $('#AjaxWebLinksWebLinks').html(WebLinks);

            }
            if (WebLinks == '') {
                ShowAjaxError('Did not find any links', this);
            }
        },
        error: function () {
            ShowAjaxError('Error getting links', this);
        }
    });

}

function ShowBusy(message) {
    var progressHtml = message;

    progressHtml += '<img src="'+ AjaxWebLinksImagePath +'/dnnanim.gif" />';
    
    $('#AjaxWebLinkStatus').html(progressHtml).show();
}

function ShowStatus(message, isFlash) {
    if (message.length > 0) {
        $('#AjaxWebLinkStatus').addClass('dnnFormSuccess').removeClass('dnnFormError');
    }

    if (isFlash) {

        $('#AjaxWebLinkStatus')
        .html(message)
        .delay(5000)
        .slideUp(function () {
            $(this).removeClass('dnnFormSuccess');
        });
    }
    else {
        $('#AjaxWebLinkStatus').html(message);
    }
    
}

function HideStatus() {
    $('#AjaxWebLinkStatus').slideUp();
}

function HideEdit() {
    $('#AjaxWebLinksEditFields').hide();
}

function ShowAjaxError(message,xhr) {
    var retry = '<button class="AjaxWebLinkRetry">Retry</button>';
    var cancel = '<button class="AjaxWebLinkCancel">Cancel</button>'

    $('#AjaxWebLinkStatus').html(message).append(cancel).addClass('dnnFormError').removeClass('dnnFormSuccess');

    if (xhr) {
        $('#AjaxWebLinkStatus').append(retry);
        $('#AjaxWebLinkStatus .AjaxWebLinkRetry').click(function () {
            ShowBusy('Trying again...Wish me luck ');
            $.ajax(xhr);
        });
    }


    $('#AjaxWebLinkStatus .AjaxWebLinkCancel').click(function (e) {
        HideStatus();
        e.preventDefault();
    });
}